﻿/******************************************************************
** 文 件 名: Bud_Category_DAL.cs
** Copyright (c) 2007-2008 广东东方思维科技有限公司
** 创 建 人: gxl
** 创建日期: 2008-9-3 19:58:51
** 描    述: 实现公共部分的数据访问封装，提供Bud_Category的数据访问类
** 版    本: 1.0.0.1
** 修改描述:
** 修 改 人:
** 修改日期:
******************************************************************/
using System;
using System.Data;
using System.Data.Common;
using System.Collections.Generic;
using System.Text;


using OT.Module.Model;
using DevExpress.Xpo;
using DevExpress.Data.Filtering;
using DevExpress.Xpo.DB;

namespace OT.Module.DAL
{
    public partial class Category_DAL 
    {
        #region ~
        /// <summary>
        /// 构造函数，使用默认的连接字符串
        /// </summary>
        public Category_DAL()
        {

        }
        /// <summary>
        /// 构造函数，使用指定的连接字符串
        /// </summary>
        /// <param name="pConnectionStringName">连接字符串名称</param>
        public Category_DAL(string pConnectionStringName)
            : base(pConnectionStringName)
        {

        }
        #endregion

        #region GetChildCategorys

        public XPCollection<Category> GetChildCategorys(Session s, string parentID)
        {
            XPCollection<Category> xp = null;

            if (string.IsNullOrEmpty(parentID))
                xp = new XPCollection<Category>(s, new NullOperator("ParentCategory"));
            else
                xp = new XPCollection<Category>(s, new BinaryOperator("ParentCategory", parentID));

            xp.Sorting.Add(new SortProperty("OrderNo", SortingDirection.Ascending));

            return xp;
        }

        #endregion

        #region HasSameNameSibling
        /// <summary>
        /// 同一个父分类下名称是否存在
        /// </summary>
        /// <param name="ParentID"></param>
        /// <param name="Name"></param>
        /// <returns></returns>
        public bool HasSameNameSibling(string parentID, string id, string name)
        {
            string where = string.Format("ParentCategory='{0}' AND Name='{1}'",
                parentID, name);

            if (!string.IsNullOrEmpty(id))
                where += string.Format(" and ID != '{0}'", id);

            return GetRecordNums<Category>(where) > 0;
        }
        #endregion

        #region HasChilds

        public bool HasChilds(string CategoryID)
        {
            string where = string.Format("ParentCategory='{0}'", CategoryID);

            return GetRecordNums<Category>(where) > 0;
        }
        #endregion


    }
}
